Welcome to pandas!

3.3 Series与DataFrame运算

DataFrame数据与Series数据相加的结果也是DataFrame数据,但此时如果直接用符号(加号)做运算,将不能正确运算,原因在于DataFrame与Series是默认在列方向运算,如果希望是行方向,那么只能使用对应的函数,add函数的axis参数可以指定运算方向,默认值为1表示列方向,设置为0表示行方向。

按列方向运算

import pandas as pd,numpy as np

path = r "D:\Pyobject2023\object\测试\测试素材.考试成绩3.xlsx"

df = pd.read_excel(path)

s=pd.Series([ "A" , 1,10,100 ], index =[ "姓名","数学","语文","英语" ])

t=df.add(s)

t=df+s #等同上一行

print (df)

print (s)

print (t)

返回:

姓名 数学 语文 英语
0 小明 85.5 67 84
1 小张 89.0 100 34
2 小李 88.5 95 99
3 小四 99.0 43 73
4 小管 100.0 66 65

姓名 A
数学 1
语文 10
英语 100

dtype: object


姓名 数学 语文 英语
0 小明A 86.5 77 184
1 小张A 90.0 110 134
2 小李A 89.5 105 199
3 小四A 100.0 53 173
4 小管A 101.0 76 165

按行方向运算

import pandas as pd,numpy as np

path = r "D:\Pyobject2023\object\测试\测试素材.考试成绩3.xlsx"

df = pd.read_excel(path)

s=pd.Series([ 1,10,100 ])

df1=df.iloc[:, 1 :]

t=df1.add(s, axis =0)

print (df1)

print (s)

print (t)

返回:

数学 语文 英语
0 85.5 67 84
1 89.0 100 34
2 88.5 95 99
3 99.0 43 73
4 100.0 66 65

0 1
1 10
2 100
dtype: int64

数学 语文 英语
0 86.5 68.0 85.0
1 99.0 110.0 44.0
2 188.5 195.0 199.0
3 NaN NaN NaN
4 NaN NaN NaN